currentUser={} #当前用户,全局变量
#-----------------------功能函数
#增加一个装饰函数来验证管理员
def checkAdmin(fun):
def warpper():
if currentUser["类型"]=="管理员":
fun()
else:
print("没有权限")
return warpper
#4、菜品上下架(仅限管理员)
@checkAdmin
def add():
@checkAdmin
def delete():
#5、设置菜品库存的价格(仅限管理员)
@checkAdmin
测试失败返回值1:
请输入用户名:bbb
请输入密码:123
---------------功能列表------------------
1、显示菜单列表
2、根据名称查询菜品信息
3、菜品上架
4、菜品下架
5、设置菜品库存的价格
6、库存预警
7、按照价格排序显示
8、退出
******************请输入功能编号(1~8):3
没有权限
---------------功能列表------------------
1、显示菜单列表
2、根据名称查询菜品信息
3、菜品上架
4、菜品下架
5、设置菜品库存的价格
6、库存预警
7、按照价格排序显示
8、退出
以管理员身份验证权限返回值2:
请输入用户名:ccc
请输入密码:123
---------------功能列表------------------
1、显示菜单列表
2、根据名称查询菜品信息
3、菜品上架
4、菜品下架
5、设置菜品库存的价格
6、库存预警
7、按照价格排序显示
8、退出
******************请输入功能编号(1~8):3
[1001, 1002, 1003, 1004, 1008]
1009
请输入菜品名称:猪肚鸡
请输入菜品单价:120
请输入菜品库存4
猪肚鸡 上架成功
----编号--------名称--------价格--------库存------
1001 -------- 牛肉 -------- 30 -------- 7 --------
1002 -------- 千张 -------- 10 -------- 122 --------
1003 -------- 土豆 -------- 12 -------- 103 --------
1004 -------- 汽水 -------- 6 -------- 34 --------
1008 -------- 啤酒 -------- 4 -------- 9 --------
1009 -------- 猪肚鸡 -------- 120.0 -------- 4 --------
---------------功能列表------------------
1、显示菜单列表
2、根据名称查询菜品信息
3、菜品上架
4、菜品下架
5、设置菜品库存的价格
6、库存预警
7、按照价格排序显示
8、退出
全系统代码:
#数据准备
user1={"用户名":"aaa","密码":"123","姓名":"张三","类型":"店员"}
user2={"用户名":"bbb","密码":"123","姓名":"李四","类型":"店员"}
user3={"用户名":"ccc","密码":"123","姓名":"王五","类型":"管理员"}
userList=[user1,user2,user3]
p1={"编号":"1001","名称":"牛肉","价格":30,"库存":7,"更新人":"ccc"}
p2={"编号":"1002","名称":"千张","价格":10,"库存":122,"更新人":"ccc"}
p3={"编号":"1003","名称":"土豆","价格":12,"库存":103,"更新人":"ccc"}
p4={"编号":"1004","名称":"汽水","价格":6,"库存":34,"更新人":"ccc"}
p5={"编号":"1008","名称":"啤酒","价格":4,"库存":9,"更新人":"ccc"}
productsList=[p1,p2,p3,p4,p5] #菜品列表
currentUser={} #当前用户,全局变量
#-----------------------功能函数
#增加一个装饰函数来验证管理员
def checkAdmin(fun):
def warpper():
if currentUser["类型"]=="管理员":
fun()
else:
print("没有权限")
return warpper
#1、用户登录
def login():
global currentUser #对全局变量进行重新赋值
result = "失效"
uName=input("请输入用户名:")
uPwd=input("请输入密码:")
for user in userList:
if user["用户名"]==uName and user["密码"]==uPwd:
currentUser = user
result="登录成功"
return result
#2、显示菜单列表
def listAll():
print("----编号--------名称--------价格--------库存------")
for product in productsList:
print(product["编号"], "--------",product["名称"],"--------" ,product["价格"],"--------",product["库存"],"--------")
#3、根据名称查询菜品信息
def getOneByName():
name=str(input("请输入菜品的名称:"))
exist=0
print("----编号--------名称--------价格--------库存------")
for product in productsList:
if name==product["名称"]:
exist=1
print(product["编号"], "--------",product["名称"],"--------" ,product["价格"],"--------",product["库存"],"--------")
if exist==0:
print("未查询到该菜品!")
#4、菜品上下架(仅限管理员)
@checkAdmin
def add():
listA=[]
for p in productsList:
listA.append(int(p["编号"]))
print(listA)
newnum=str(max(listA)+1)
print(newnum)
uname=currentUser["用户名"]
name=input("请输入菜品名称:")
price=float(input("请输入菜品单价:"))
stock=int(input("请输入菜品库存"))
newPro={"编号":newnum,"名称":name,"价格":price,"库存":stock,"更新人":uname}
productsList.append(newPro)
print(newPro["名称"],"上架成功")
listAll()
@checkAdmin
def delete():
exist=0
num=input("请输入下架的菜品编号")
for p in productsList:
if p["编号"]==num:
productsList.remove(p) #删除
exist=1
print(p["名称"],"下架成功")
if exist==0:
print("没有此菜品,下加失败")
listAll()
#5、设置菜品库存的价格(仅限管理员)
@checkAdmin
def update():
while True:
exist = 0
num=input("请输入要修改的菜品编号:")
for product in productsList:
if product["编号"]==num:
exist = 1
input1 = input("您需要更新的值是:1、价格,2、库存:")
input2 = input("更新后的值为:")
if input1=="1":
product["价格"]=float(input2)
elif input1=="2":
product["库存"]=int(input2)
print("----菜品",product["名称"],"已更新成功")
listAll()
break
if exist==0:
print("此菜品不存在!")
choice=input("请输入1 取消 2 继续输入")
if choice=="1":
break
else:
continue
else:
break
#6、库存预警(低于10时)
def warning():
exist = 0
print("以下菜品需要补充食材:")
print("----编号--------名称--------价格--------库存------")
for product in productsList:
if product["库存"]<10:
exist = 1
print(product["编号"], "--------", product["名称"], "--------", product["价格"], "--------",
product["库存"], "--------")
if exist == 0:
print("库存充足!")
#7、按照价格排序显示
def sortByPrice():
choice=input("请选择升序或降序(1 升序 2 降序)")
plist=[]
for product in productsList:
plist.append(product["价格"])
plist=list(set(plist)) #将plist用set函数去重,然后再转成列表,最后将值返回给plist
if choice=="1":
plist.sort()
else:
plist.sort(reverse=True)
print("----编号--------名称--------价格--------库存------")
for price in plist:
for product in productsList:
if price==product["价格"]:
print(product["编号"], "--------", product["名称"], "--------", product["价格"], "--------",
product["库存"], "--------")
#————————————————————————————显示主菜单,并调用相关功能
print("***************************** 菜品管理系统1.0 ************************************************")
while True:
result=login()
if result=="失败":
print("登录失败!请重新登录!")
continue
#业务功能
while True:
print("---------------功能列表------------------")
print("1、显示菜单列表")
print("2、根据名称查询菜品信息")
print("3、菜品上架")
print("4、菜品下架")
print("5、设置菜品库存的价格")
print("6、库存预警")
print("7、按照价格排序显示")
print("8、退出")
choice=input("******************请输入功能编号(1~8):")
if choice=="1":
listAll()
elif choice=="2":
getOneByName()
elif choice=="3":
add()
elif choice=="4":
delete()
elif choice=="5":
update()
elif choice=="6":
warning()
elif choice=="7":
sortByPrice()
elif choice=="8":
break
else:
print("设有此功能,请重新选择")
continue